//  重点主要是   Promise.resolve(value)  不管是不是返回的promise 统一处理
function co(it) {
  return new Promise((resolve, reject) => {
    // 异步迭代
    function next(data) {
      let {value, done} = it.next(data)
      if(!done) {
        Promise.resolve(value).then(data => {
          next(data)
        }, err => {
          reject(err)
        })
      }else{
        resolve(value)
      }
    }
    next()
  })
}